import { useMemo } from 'react';

import { StorageEnum } from '@/types/enum';
import { getItem } from '@/utils/storage';

/**
 * 天工角色权限 Hook（分级）
 * - isTiangong: 是否为天工体系用户
 * - isTiangongSuperAdmin: 天工超管（super_admin）
 * - isTiangongAdmin: 天工管理员（admin）
 * - isTiangongNormalUser: 天工普通用户（非 admin/super_admin）
 * - isTiangongManager: 兼容旧字段，等价于（超管 或 管理员）
 */
export const useTiangongRole = () => {
  const roleState = useMemo(() => {
    const userInfo = getItem<any>(StorageEnum.User);
    const isTiangong = Boolean(userInfo?.is_TianGong === 'true' || userInfo?.is_TianGong === true);
    const roleCode: string | undefined = userInfo?.role?.code;

    const isTiangongSuperAdmin = Boolean(isTiangong && roleCode === 'super_admin');
    const isTiangongAdmin = Boolean(isTiangong && roleCode === 'admin');
    const isTiangongNormalUser = Boolean(isTiangong && !isTiangongSuperAdmin && !isTiangongAdmin);

    // 兼容旧用法：管理员（超管或管理员）
    const isTiangongManager = Boolean(isTiangongSuperAdmin || isTiangongAdmin);

    return {
      isTiangong,
      isTiangongSuperAdmin,
      isTiangongAdmin,
      isTiangongNormalUser,
      isTiangongManager,
    };
  }, []);

  return roleState;
};

export default useTiangongRole;
